<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //Promise 里的then方法
        //一. then的基本使用
        //每一个Promise对象都会有一个then方法,then方法里会接收2种回调,onResolved 和 onRejected
        // let p = new Promise((resolve, reject) => {
        //     resolve("success");
        //     // reject("error");
        // })
        // p.then((res)=>{
        //     //onResolved: 成功状态的promise  会执行 onResolved 回调函数
        //     console.log("成功",res);// 成功 success
        // },(err)=>{
        //     //onRejected:  失败状态的promise  会执行 onRejected 回调函数
        //     console.log("失败",err);
        // })

        //都会接收promise对象的结果值  promiseResult

        //可以把 onRejected 省略掉


        //二.then的返回值
        let p = new Promise((reslove, reject) => {
            reslove("success");
        })

        // let thenResult = p.then(res=>{
        //     console.log("成功",res);
        //     return "hello"
        // })

        /* 
        1.没有返回: 得到成功状态的promise 对象  promiseResult 是undefined
        
        2.返回值: 会把返回值 作为下一个promise对象的 promiseResult 结果值返回,得到的也是一个promise对象

        3.返回一个promise对象,then会把返还的这个promise对象原封不动的返还出来
        */

        //无返回值
        // console.log(thenResult); //fulfilled undefined

        //有返回值
        // console.log(thenResult); // fulfilled hello

        //返回promise对象
        // let thenResult = p.then(res => {
        //     console.log("成功", res); //成功 success
        //     return new Promise((resolve, reject) => {
        //         resolve("返还的成功值");
        //         // reject("error")
        //     });
        // })
        // console.log(thenResult); //fulfilled  返还的成功值

        //4.then 里抛出错误情况
        //会返回一个rejected 状态的 promise对象, promiseResult  值就是报错的内容

        // let thenResult = p.then(res => {
        //     console.log("成功了",res);// 成功了 success
        //     throw Error("错了");
        // })
        // console.log(thenResult); //rejected Error: 错了

        
        //总结:无论如何,promise的then方法  都会返回一个promise对象,每个对象都会有一个then方法,  .then是可以无限链式调用的
        

    </script>
</body>

</html>